#ifndef D_MATH_H
#define D_MATH_H

namespace d_Math
{
	typedef class d_Vec2f;
	typedef class d_Vec3f;
	typedef class d_Vec4f;
	typedef class d_Mat4f;
	typedef class d_Plane;
	typedef class d_AABB;
	typedef class d_NormalCone;
	typedef class d_Frustum;
	typedef class d_Vecf;
	typedef class d_Matf;

	float len(const d_Vec3f a);
	d_Vec3f norm(const d_Vec3f a);
	float dot(const d_Vec3f a, const d_Vec3f b);
	d_Vec3f cross(const d_Vec3f a, const d_Vec3f b);

	float len(const d_Vec4f a);
	d_Vec4f norm(const d_Vec4f a);
	float dot(const d_Vec4f a, const d_Vec4f b);

	d_Mat4f trans(const d_Mat4f &m);

	float dist(const d_Vec3f a, const d_Vec3f b);
	
	enum {OUTSIDE, INTERSECT, INSIDE};
}

#include "d_Vec2f.h"
#include "d_Vec3f.h"
#include "d_Vec4f.h"
#include "d_Mat4f.h"
#include "d_Plane.h"
#include "d_AABB.h"
#include "d_NormalCone.h"
#include "d_Frustum.h"
#include "d_Vecf.h"
#include "d_Matf.h"

#endif

